import 'package:flustars/flustars.dart';
import 'package:sqflite/sqflite.dart';

/// 用来 管理数据库的类
class SqfliteManager {
  // 数据库版本
  static const int version = 1;

  // 数据库名称
  static const String _dbName = "root.db";

  // 数据库对象
  static Database? _db;

  //初始化数据库对象
  static Future<void> _init({Function(Database,int)? onCreate}) async {
    // 生成数据库在本地存储中的存储位置
    String dbPath = await getDatabasesPath() + "/$_dbName";
    _db = await openDatabase(dbPath,
        version: version, onCreate: (db, version) async {
          onCreate?.call(db,version);
        });
  }

  // 获取当前数据库对象,第一次获取没有创建则创建
  static Future<Database> getCurrentDatabase({Function(Database,int)? onCreate}) async {
    if (_db == null) {
      await _init(onCreate:onCreate);
    }
    return _db!;
  }

  // 判断表是否存在
  static Future<bool> isTableExits(String tableName) async {
    await getCurrentDatabase();
    var result = await _db!.rawQuery(
        "select * from Sqlite_master where type = 'table' and name = '$tableName'");
    // return result != null && result.length > 0;
    // return result?.isNotEmpty ?? false;
    return ObjectUtil.isNotEmpty(result);
  }

  //关闭数据库
  static void close(){
    _db?.close();
    _db = null;
  }
}
